The present invention relates to communications within a system and more particularly to interprocessor communication (IPC) protocols. Typical IPC protocols within a system rely on a unique identifier number embedded in a transaction packet to identify a response from a replying processor. For example, a first processor can send a read request to a memory controller hub (MCH) with an identifier of 10, for example. When the memory controller hub responds with the data, it includes identifier number 10 with the data packet. In this manner, data responses can be returned out-of-order with the request stream for increased performance.
Typically, the number of bits in the identifier field in a request or response packet is sized such that the total number of outstanding transactions for the entire system can be uniquely represented. As the number of processors in the system grows, ideally the number of outstanding transactions in the system should also grow. However, using a fixed size identifier field that is sized for a large system can penalize small systems with extra unused bits in the identifier field, negatively affecting performance. Alternately, setting the fixed size identifier field to be efficient for a typical small system can limit the ability to support large systems by limiting the total amount of outstanding transactions. A need thus exists to more efficiently identify transactions flowing through a system.